﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using AdmLaboratorios.DTO;

namespace AdmLaboratorios
{
    public partial class frmIRItem : Form
    {
        public PartnerDTO Partner { get; set; }
        public ProductoDTO Producto { get; set; }
        public InformeRecepcionItemDTO Item { get; set; }

        public frmIRItem()
        {
            InitializeComponent();
        }
        
        private bool Validations()
        {
            if (FormsHelper.StN(txCantidad.Text) == 0)
                return false;

            if (Producto == null)
                return false;

            return true;
        }

        private void frmIRItem_Load(object sender, EventArgs e)
        {
            if (Producto != null && Item != null)
            {
                txProducto.Text = string.Format("{0} [{1}] | {2}",
                   this.Producto.Nombre,
                   this.Producto.Codigo,
                   this.Producto.Tipo);

                txCantidad.Text = this.Item.Cantidad.ToString();
                txBultos.Text = this.Item.Bultos.ToString();
                txNroAnalisis.Text = this.Item.NroAnalisis;
                txNroFabricacion.Text = this.Item.NroFabricacion;
                dtVto.Value = this.Item.Vencimiento;
                dtVtoFabricacion.Value = this.Item.VencimientoOrigen;
                txObs.Text = this.Item.Obs;
            }
            else
            {
                dtVto.Value = DateTime.Today;
                dtVtoFabricacion.Value = DateTime.Today;
            }
        }

        private void btProducto_Click(object sender, EventArgs e)
        {
            using (frmProductoSeleccionOP f = new frmProductoSeleccionOP())
            {
                f.Partner = this.Partner;
                FormsHelper.CargarColumnasGrilla(f);
                if (f.ShowDialog() == System.Windows.Forms.DialogResult.OK && f.Producto != null)
                {
                    this.Producto = f.Producto;
                    txProducto.Text = string.Format("{0} [{1}] | {2}",
                        this.Producto.Nombre,
                        this.Producto.Codigo,
                        this.Producto.Tipo);
                }
            }
        }

        private void picProductoDetalle_Click(object sender, EventArgs e)
        {
            if (this.Producto != null)
            {
                using (frmProductoDetalle f = new frmProductoDetalle())
                {
                    f.Producto = this.Producto;
                    FormsHelper.CargarColumnasGrilla(f);
                    f.ShowDialog();
                }
            }
        }

        private void btCancelar_Click(object sender, EventArgs e)
        {
            Producto = null;
            Item = null;

            this.DialogResult = System.Windows.Forms.DialogResult.Cancel;
            this.Close();
        }

        private void btAceptar_Click(object sender, EventArgs e)
        {
            if (Validations())
            {
                Item = new InformeRecepcionItemDTO();
                
                Item.Activo = true;
                Item.Cantidad = FormsHelper.StN(txCantidad.Text);
                Item.Id = 0;
                Item.IdInformeRecepcion = 0;
                Item.IdStock = 0;
                
                Item.Obs = txObs.Text;
                
                Item.IdProducto = Producto.Id;

                Item.Bultos = Convert.ToInt32(FormsHelper.StN(txBultos.Text));
                Item.Vencimiento = dtVto.Value;
                Item.VencimientoOrigen = dtVtoFabricacion.Value;
                Item.NroFabricacion = txNroFabricacion.Text;
                Item.NroAnalisis = txNroAnalisis.Text;

                this.DialogResult = System.Windows.Forms.DialogResult.OK;
                this.Close();
            }
            else
            {
                errP.SetError(btAceptar, "Campos obligatorios sin cargar");
            }
        }

        private void txCantidad_Validating(object sender, CancelEventArgs e)
        {
            txCantidad.Text = Math.Round(FormsHelper.StN(txCantidad.Text), 4).ToString();
        }

        private void txBultos_Validating(object sender, CancelEventArgs e)
        {
            txBultos.Text = Math.Round(FormsHelper.StN(txBultos.Text), 4).ToString();
        }
        
    }
}
